#ifndef OUTPUTDEVICE_H
#define OUTPUTDEVICE_H

#include "scene.h"
#include "sceneelement.h"
#include "id_generator.h"

class OutputDevice
{
public:
//  enum PrimitiveType { Sphere = 0, Ellipsoid = 1, Cylinder = 2, Cone = 3, Paralelepiped = 4, Point = 5, Line = 6, Surface = 7 };
  virtual void init() = 0;
  virtual void resize(unsigned int w, unsigned int h) = 0;
  virtual void redraw() = 0;
  virtual void clear() = 0;
  virtual void setScene(Scene& s ) = 0;
  virtual void updateAll() = 0;
  virtual void updateSelection() = 0;
  virtual void updateCamera() = 0;
  
  virtual void drawSphere(const Sphere& o) = 0;
  virtual void drawEllipsoid(const Ellipsoid& o) = 0;
  virtual void drawCylinder(const Cylinder& o) = 0;
  virtual void drawCone(const Cone& o) = 0;
  virtual void drawParalelepiped(const Paralelepiped& o) = 0;
  virtual void drawSurface(const Surface& o) = 0;
  virtual void drawPoint(const Point& o) = 0;
  virtual void drawLine(const Line& o) = 0;
  virtual void drawText(const Text& o) = 0;
};

#endif // OUTPUTDEVICE_H
